package com.situ.spring.proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class ProxyFactory {

	
	public static Object getProxyInstance(Object target) {
		return Proxy.newProxyInstance(
				target.getClass().getClassLoader(), //制指定目标对象使用的类加载器
				target.getClass().getInterfaces(), //目标对象实现的接口
				new InvocationHandler() {  //事件处理器
					
					
					  // Object proxy 代理对象
			           // Method method 调用的方法
			           // Object[] args 调用的方法的参数
					@Override
					public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
						System.out.println("开启事务");
						Object returnValue = method.invoke(target, args);
						System.out.println("关闭事务");
						return returnValue;
					}
				});
		
		
		
		
	}
}
